iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
Modern Web

想試試寫程式的感覺,就用 JavaScript 來寫寫看網頁吧系列 第 25

[想試試看JavaScript ] 陣列一些操作陣列好用的方法 (三)

  • 分享至 

  • xImage
  •  

陣列-一些操作陣列好用的方法 (三)

這篇整理一些常用的陣列方法

sort()

sort() 會對陣列所有的元素進行排列,並回傳此陣列

語法:

可以直接使用 sort

Array.sort()

或者參數使用compareFunction

Array.sort(compareFunction)

範例:

var a=[3,5,7,9,1,2]
console.log(a.sort());  // 回傳排序好的陣列,[1, 2, 3, 5, 7, 9]
console.log(a); // [1, 2, 3, 5, 7, 9]

如果直接使用 sort,沒有使用 compareFunction,預設會將元素轉成字串,並使用unicode來判斷,所以也會造成某些數字判斷錯誤

var b=[1,2,6,4,5,2,9,11,13,7];
console.log(b.sort()); // [1, 11, 13, 2, 3, 4, 5, 6, 7, 9]

使用 compareFunction 可以避免這個問題

sort() 的參數裡面可以放一個函式,函式有兩個參數。

語法:

function compareFunction(x,y){
	return x-y // 這樣數字會由小排到大
}

範例:

var b=[1,2,6,4,5,2,9,11,13,7];
b.sort(function(x,y){
	return x-y
});
console.log(b); // [1, 2, 3, 4, 5, 6, 7, 9, 11, 13]
b.sort(function(x,y){
	return y-x
});
console.log(b); // [13, 11, 9, 7, 6, 5, 4, 3, 2, 1]

compareFunction 實際是依照回傳值來排序

compareFunction(x,y) 回傳值如果小於 0(負數),表示 x 會排在 y 前面

compareFunction(x,y) 回傳值如果大於 0(正數),表示 y 會排在 x 前面

所以 compareFunction 也可以寫成這樣

function compareFunction(x,y){
	if(x<y) return -1;
	if(x>y) return 1;
	return 0;
}

也可以使用 console.log 觀察一下,是怎樣比較的

function compareFunction(x,y){
	console.log(x,y);
	if(x<y) return -1;
	if(x>y) return 1;
	return 0;
}

fill()

fill() 可以將陣列中的元素替換成指定的值,並且回傳改變後的陣列

語法

fill() 有三個參數

  1. value,想替換的值
  2. start (選填),從什麼位置開始替換,不設定就替換全部
  3. end (選填),停止替換的元素的前一個位置

可以直接使用

Array.fill()

或使用參數

Array.fill(value,start,end)

範例:

var a=[1,2,3,4,5,6,7,8];
console.log(a.fill(null)); // [null,null,null,null,null,null,null,null]

var b=[1,2,3,4,5,6,7,8];
console.log(b.fill('b',2,6)); //[1,2,'b','b','b','b',7,8]

上一篇
[想試試看JavaScript ] 陣列一些操作陣列好用的方法 (二)
下一篇
[想試試看JavaScript ] 陣列一些操作陣列好用的方法 forEach
系列文
想試試寫程式的感覺,就用 JavaScript 來寫寫看網頁吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言